Приложение 1. Язык выражений системы компоновки данных

Язык выражений системы компоновки данных предназначен для записи выражений, используемых в различных частях системы, например, в настройках компоновки данных, для описания выражений пользовательских полей.

Литералы

В выражении могут присутствовать литералы. Возможны литералы следующих типов:

Строка,

Число,

Дата,

Булево.

Строка

Строковый литерал записывается в символах «"».

Копировать в буфер обмена
"Строковый литерал"

При необходимости использования внутри строкового литерала символа «"» следует использовать два таких символа.

Копировать в буфер обмена
"Литерал ""в кавычках"""

Число

Число записывается без пробелов, в десятичном формате. Дробная часть отделяется при помощи символа «.».

Копировать в буфер обмена
10.5
200

Дата

Литерал типа Дата записывается при помощи ключевого литерала ДАТАВРЕМЯ (DATETIME). После данного ключевого слова в скобках, через запятую, перечисляются год, месяц, день, часы, минуты, секунды. Указание времени необязательно.

Копировать в буфер обмена
ДАТАВРЕМЯ(1975, 1, 06) - Шестое января 1975 года
ДАТАВРЕМЯ(2006, 12, 2, 23, 56, 57) - Второе декабря 2006 года, 23 часа 56 минут 57 секунд

Булево

Булевы значения могут быть записаны при помощи литералов Истина (True), Ложь (False).

Значение

Для указания литералов других типов (системных перечислений, предопределенных данных) используется ключевое слово ЗНАЧЕНИЕ, после которого в скобках идет указание имени литерала.

Копировать в буфер обмена
ЗНАЧЕНИЕ(ВидСчета.Активный)

Поля

В выражениях могут использоваться поля наборов данных. Поле идентифицируется путем к данным. Части пути к данным отделяются друг от друга символом «.». Имя поля не является чувствительным к регистру.

Копировать в буфер обмена
Номенклатура.Артикул
Продажи.СуммаОборот

Параметры

Выражения могут использовать параметры. Для использования в выражении параметра достаточно написать его имя, которому будет предшествовать символ &.

Копировать в буфер обмена
&Контрагент
&ДатаНачала

1.1. Операции над числами

Унарный –

Данная операция предназначена для изменения знака числа на обратный.

Копировать в буфер обмена
-Продажи.Количество

Унарный +

Данная операция не выполняет над числом никаких действий.

Копировать в буфер обмена
+Продажи.Количество

Бинарный –

Данная операция предназначена для вычисления разности двух чисел.

Копировать в буфер обмена
ОстаткиИОбороты.НачальныйОстаток - ОстаткиИОбороты.КонечныйОстаток
ОстаткиИОбороты.НачальныйОстаток - 100
400 - 357

Бинарный +

Данная операция предназначена для вычисления суммы двух чисел.

Копировать в буфер обмена
ОстаткиИОбороты.НачальныйОстаток + ОстаткиИОбороты.Оборот
ОстаткиИОбороты.НачальныйОстаток + 100
400 + 357

Произведение

Данная операция предназначена для вычисления произведения двух чисел.

Копировать в буфер обмена
Номенклатура.Цена * 1.2
2 * 3.14

Деление

Данная операция предназначена для получения результата деления одного операнда на другой.

Копировать в буфер обмена
Номенклатура.Цена / 1.2
2 / 3.14

Остаток от деления

Данная операция предназначена для получения остатка от деления одного операнда на другой.

Копировать в буфер обмена
Номенклатура.Цена % 1.2
2 % 3.14

1.2. Операции над строками

Конкатенация (Бинарный +)

Данная операция предназначена для конкатенации двух строк. Использование строк неограниченной длины не поддерживается. Строка длиной более 1024 символов считается строкой неограниченной длины.

Копировать в буфер обмена
Номенклатура.Артикул + ": "+ Номенклатура.Наименование

ПОДОБНО (LIKE)

Данная операция проверяет соответствие строки переданному шаблону.

Значением оператора ПОДОБНО является Истина, если значение выражения удовлетворяет шаблону, и Ложь в противном случае.

Следующие символы в строке шаблона имеют смысл, отличный от просто очередного символа строки:

% – процент: последовательность, содержащая ноль и более произвольных символов;

_ – подчеркивание: один произвольный символ;

[…] – один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a–z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;

[^…] – в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания.

Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать спецсимвол, указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).

Например, приведенный ниже шаблон означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться начиная с произвольной позиции в строке.

Копировать в буфер обмена
"%АБВ[0-9][абвг]\_абв%" СПЕЦСИМВОЛ "\"

1.3. Операции сравнения

РАВНО

Данная операция предназначена для сравнения двух операндов на равенство.

Копировать в буфер обмена
Продажи.Контрагент = Продажи.НоменклатураОсновнойПоставщик

НЕ РАВНО

Данная операция предназначена для сравнения двух операндов на неравенство.

Копировать в буфер обмена
Продажи.Контрагент <> Продажи.НоменклатураОсновнойПоставщик

МЕНЬШЕ

Данная операция предназначена для проверки того, что первый операнд меньше второго.

Копировать в буфер обмена
ПродажиТекущие.Сумма < ПродажиПрошлые.Сумма

БОЛЬШЕ

Данная операция предназначена для проверки того, что первый операнд больше второго.

Копировать в буфер обмена
ПродажиТекущие.Сумма > ПродажиПрошлые.Сумма

МЕНЬШЕ ИЛИ РАВНО

Данная операция предназначена для проверки того, что первый операнд меньше либо равен второму.

Копировать в буфер обмена
ПродажиТекущие.Сумма <= ПродажиПрошлые.Сумма

БОЛЬШЕ ИЛИ РАВНО

Данная операция предназначена для проверки того, что первый операнд больше либо равен второму.

Копировать в буфер обмена
ПродажиТекущие.Сумма >= ПродажиПрошлые.Сумма

Операция «В» (IN)

Данная операция осуществляет проверку наличия значения в переданном списке значений. Результатом операции будет Истина, если значение найдено, или Ложь – в противном случае.

Копировать в буфер обмена
Номенклатура В (&Товар1, &Товар2)

Операция проверки наличия значения в наборе данных

Операция осуществляет проверку наличия значения в указанном наборе данных. Набор данных для проверки должен содержать одно поле.

Копировать в буфер обмена
Продажи.Контрагент В Контрагенты

Операция проверки значения на NULL ЕСТЬ NULL (IS NULL)

Данная операция возвращает значение Истина, если оно является значением NULL.

Копировать в буфер обмена
Продажи.Контрагент ЕСТЬ NULL

Операция проверки значения на неравенство NULL ЕСТЬ НЕ NULL (IS NOT NULL)

Данная операция возвращает значение Истина, если оно не является значением NULL.

Копировать в буфер обмена
Продажи.Контрагент ЕСТЬ НЕ NULL

1.4. Логические операции

Логические операции принимают в качестве операндов выражения, имеющие тип Булево.

Операция «НЕ» (NOT)

Операция НЕ возвращает значение Истина, если ее операнд имеет значение Ложь, и Ложь, если ее операнд имеет значение Истина.

Копировать в буфер обмена
НЕ Документ.Грузополучатель = Документ.Грузоотправитель

Операция «И» (AND)

Операция И возвращает значение Истина, если оба операнда имеют значение Истина, и Ложь, если один из операндов имеет значение Ложь.

Копировать в буфер обмена
Документ.Грузополучатель = Документ.Грузоотправитель И Документ.Грузополучатель = &Контрагент

Операция «ИЛИ» (OR)

Операция ИЛИ возвращает значение Истина, если один из операндов имеет значение Истина, и Ложь, если оба операнда имеют значение Ложь.

Копировать в буфер обмена
Документ.Грузополучатель = Документ.Грузоотправитель ИЛИ Документ.Грузополучатель = &Контрагент

1.5. Агрегатные функции

Агрегатные функции осуществляют некоторое действие над набором данных.

СУММА (SUM)

Агрегатная функция СУММА рассчитывает сумму значений выражений, переданных ей в качестве аргумента для всех детальных записей. В качестве параметра может быть использован результат функции Массив.

Копировать в буфер обмена
СУММА(Продажи.СуммаОборот)

КОЛИЧЕСТВО (COUNT)

Функция КОЛИЧЕСТВО рассчитывает количество значений, отличных от значения NULL. В качестве параметра может быть использован результат функции Массив. Например:

Копировать в буфер обмена
КОЛИЧЕСТВО(Продажи.Контрагент)

КОЛИЧЕСТВО (РАЗЛИЧНЫЕ) (COUNT (DISTINCT))

Эта функция рассчитывает количество различных значений. В качестве параметра может быть использован результат функции Массив.

Копировать в буфер обмена
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.Контрагент)

МАКСИМУМ (MAX)

Функция получает максимальное значение. В качестве параметра может быть использован результат функции Массив.

Копировать в буфер обмена
МАКСИМУМ(Остатки.Количество)

МИНИМУМ (MIN)

Функция получает минимальное значение. В качестве параметра может быть использован результат функции Массив.

Копировать в буфер обмена
МИНИМУМ(Остатки.Количество)

СРЕДНЕЕ (AVG)

Функция получает среднее значение для значений, отличных от NULL. В качестве параметра может быть использован результат функции Массив.

Копировать в буфер обмена
СРЕДНЕЕ(Остатки.Количество)

МАССИВ (ARRAY)

Функция возвращает массив, содержащий для каждой детальной записи значение параметра. Если выражение, указанное в параметре, содержит функцию Массив, то считается, что данное выражение является агрегатным. В качестве параметра для функции указывается выражение произвольного типа.

В качестве параметра может быть указано выражение, возвращающее таблицу значений. При этом результатом работы функции Массив будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра.

Копировать в буфер обмена
МАССИВ(КоличествоПредложений)

ТАБЛИЦАЗНАЧЕНИЙ (VALUETABLE)

Функция возвращает таблицу значений, содержащую столько колонок, сколько параметров у функции. Детальные записи получаются из наборов данных, которые нужны для получения всех полей, участвующих в выражениях параметров функции. Если выражение содержит функцию ТаблицаЗначений, то считается, что данное выражение является агрегатным.

У функции может быть один или несколько параметров произвольного типа. После каждого параметра может располагаться необязательное ключевое слово КАК и имя, которое будет назначено колонке таблицы значений.

Копировать в буфер обмена
ТаблицаЗначений(Различные Номенклатура, ХарактеристикаНоменклатуры КАК Характеристика)

ГРУППОВАЯОБРАБОТКА (GROUPPROCESSING)

Функция возвращает объект ДанныеГрупповойОбработкиКомпоновкиДанных (DataCompositionGroupProcessingData), который имеет следующие свойства:

Данные (Data). Тип – таблица значений. В это свойство функция помещает таблицу значений, содержащую результаты вычисления выражения, указанного в первом параметре функции для каждой групповой записи группировки. Если группировка иерархическая, то каждый уровень иерархии обрабатывается функцией отдельно, при этом значения для иерархических записей также помещаются в данные.

ТекущийЭлемент (CurrentItem) – строка таблицы значений, являющихся текущими. При вызове для общего итога ТекущийЭлемент содержит значение Неопределено. В данное свойство функция помещает строку таблицы значений, для которой в настоящий момент вычисляется функция.

ВременныеДанныеОбработки (ProcessingTempData) – структура, в которую могут быть помещены данные промежуточных результатов. Рекомендуется в различных функциях давать свойствам уникальные имена, т. к. возможна ситуация, когда один и тот же объект ДанныеГрупповойОбоработкиКомпоновкиДанных будет передан в несколько различных функций.

Функция имеет следующие параметры:

Выражения – строка, в которой через запятую перечислены выражения, которые нужно вычислить. После каждого выражения возможно наличие необязательного ключевого слова КАК и имени колонки результирующей таблицы значений.

ВыраженияИерархии – выражения, которые нужно вычислить для иерархических записей. Аналогично параметру Выражения с тем отличием, что параметр Выражения используется для неиерархических записей, а параметр ВыраженияИерархии используется для иерархических записей. Если параметр не указан, то для вычисления значений для иерархических записей используются выражения, указанные в параметре Выражение.

ИмяГруппировки – имя группировки, в которой нужно вычислять группировку обработки. Тип Строка. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя именем группировки в результирующем макете. Если группировка недоступна, то функция будет заменена на значение NULL.

Копировать в буфер обмена
ГрупповаяОбработка("Сумма(СуммаОборот)")

СВЕРНУТЬ (GROUPBY)

Функция предназначена для удаления дубликатов из массива. Возвращает массив или таблицу значений, в которой отсутствуют дублирующиеся элементы.

Параметры:

Массив или таблица значений;

● номера или имена колонок таблицы значений, среди которых нужно искать дубликаты. По умолчанию все колонки (через запятую).

ПОЛУЧИТЬЧАСТЬ(GETPART)

Функция возвращает таблицу значений, содержащую определенные колонки из исходной таблицы значений.

Параметры:

● таблица значений, из которой нужно получить колонки;

● номера или имена колонок, которые нужно получить, разделенные запятой.

Возвращаемое значение: таблица значений, включающая только колонки, которые указаны в параметре Номера/имена колонок.

УПОРЯДОЧИТЬ(ORDER)

Предназначена для упорядочивания элементов массива.

Параметры:

Массив или ТаблицаЗначений;

● номер или имя колонки таблицы значений, по которой нужно упорядочить. Для массива номер можно не указывать. Направление упорядочивания Необходимость автоупорядочивания. Убыв/Возр + Автоупорядочивание.

Возвращаемое значение: массив или таблица значений с упорядоченными элементами.

СОЕДИНИТЬСТРОКИ (JOINSTRINGS)

Агрегатная функция, позволяющая объединять строки в одну строку.

Параметры:

Значения, которые нужно объединить в одну строку. Если является массивом, то в строку будут объединяться элементы массива. Если является таблицей значений, то в строку будут объединяться все колонки и строки таблицы.

Разделитель элементов. Строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию символ перевода строк.

Разделители колонок. Строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».

Каждый (Every)

Если хоть одна запись имеет значение Ложь, то функция возвращает Ложь. Иначе – Истина.

Синтаксис:

Каждый(Выражение)

Параметр:

Выражение – тип Булево.

Пример:

Копировать в буфер обмена
Каждый()

Любой (Any)

Если хоть одна запись имеет значение Истина, то результат – Истина. Иначе – Ложь.

Синтаксис:

Любой(Выражение)

Параметр:

Выражение – тип Булево.

Пример:

Копировать в буфер обмена
Любой()

СтандартноеОтклонениеГенеральнойСовокупности (Stddev_Pop)

Вычисляет стандартное отклонение совокупности. Используется формула: SQRT(ДисперсияГенеральнойСовокупности(X))

Синтаксис: СтандартноеОтклонениеГенеральнойСовокупности(Выражение)

Параметр:

 Выражение – тип Число.

Тип возвращаемого значения – Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
805.694444

СтандартноеОтклонениеВыборки (Stddev_Samp)

Функция вычисляет совокупное типовое стандартное отклонение. Используется формула: SQRT(ДисперсияВыборки(X))

Синтаксис:

СтандартноеОтклонениеВыборки(Выражение)

Параметр:

 Выражение – тип Число.

Тип возвращаемого значения – Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ СтандартноеОтклонениеВыборки(Y) ИЗ Таблица

Результат:

Копировать в буфер обмена
28.3847573

ДисперсияВыборки (Var_Samp)

Функция вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X^2) - Сумма(X)^2 / Количество(X)) / (Количество(X) - 1).

Если Количество(X) = 1, то возвращается значение NULL.

Синтаксис:

ДисперсияВыборки(Выражение)

Параметр:

Выражение – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
805.694444

ДисперсияГенеральнойСовокупности (Var_Pop)

Функция вычисляет различие совокупности ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X ^2) - Сумма(X)^2 / Количество(X)) / Количество(X).

Синтаксис:

ДисперсияГенеральнойСовокупности(Выражение)

Параметр:

Выражение – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ ДисперсияГенеральнойСовокупности(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
716.17284

КовариацияГенеральнойСовокупности (Covar_Pop)

Вычисляет ковариацию ряда числовых пар. Используется формула: (Сумма(Y * X) - Сумма(X) * Сумма(Y) / n) / n, где n число пар (Y, X), в которых ни Y ни X не являются NULL.

Синтаксис:

КовариацияГенеральнойСовокупности(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ КовариацияГенеральнойСовокупности(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
59.4444444

КовариацияВыборки (Covar_Samp)

Вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(Y * X) - Сумма(Y) * Сумма(X) / n) / (n-1), где n число пар (Y, X) в которых ни Y, ни X не являются NULL.

Синтаксис:

КовариацияВыборки(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ КовариацияВыборки(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
66.875

Корреляция (Corr)

Функция вычисляет коэффициент корреляции ряда числовых пар. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / (СтандартноеОтклонениеГенеральнойСовокупности(Y) * СтандартноеОтклонениеГенеральнойСовокупности(X)). Не учитываются пары, в которых Y или XNULL.

Синтаксис:

Корреляция(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ Корреляция(X, Y) ИЗ Таблица

Результат:

Копировать в буфер обмена
0.860296149

РегрессияНаклон (Regr_Slope)

Функция вычисляет наклон линии. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / ДисперсияГенеральнойСовокупности(X). Вычисляется без учета пар, содержащих NULL.

Синтаксис:

РегрессияНаклон(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияНаклон(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
 8.91666667

РегрессияОтрезок (Regr_Intercept)

Функция вычисляет Y-точку пересечения линии регресса. Используется формула: Среднее(Y) - РегрессияНаклон(Y, X) * Среднее(X). При вычислении не учитываются пары, содержащие NULL.

Синтаксис:

 РегрессияОтрезок(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияОтрезок(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
-20.361111

РегрессияКоличество (Regr_Count)

Вычисляет количество пар, не содержащих NULL.

Синтаксис:

РегрессияКоличество(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияКоличество(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
9

РегрессияR2 (Regr_R2)

Вычисляет коэффициент детерминации. Вычисляется без учета пар, содержащих NULL.

Синтаксис:

РегрессияR2(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Возвращаемое значение:

 NULL – если ДисперсияГенеральнойСовокупности(X)=0; 1 – если ДисперсияГенеральнойСовокупности(Y)=0 и ДисперсияГенеральнойСовокупности(X)<>0; POW(Корреляция(Y,X),2) – если ДисперсияГенеральнойСовокупности(Y)>0 и ДисперсияГенеральнойСовокупности(X)<>0.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияR2(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
0.740109464

РегрессияСреднееX (Regr_AvgX)

Вычисляет среднее число Y после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (X) вычисляется без учета пар, содержащих NULL.

Синтаксис:

 РегрессияСреднееX(Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияСреднееX(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
5

РегрессияСреднееY (Regr_AvgY)

Функция вычисляет среднее число X после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (Y) вычисляется без учета пар, содержащих NULL.

Синтаксис:

РегрессияСреднееY (Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияСреднееY(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
24.2222222

РегрессияSXX (Regr_SXX)

Функция возвращает сумму квадратов независимых выражений, используемых в линейной модели регресса. Функция может использоваться, чтобы оценить статистическую обоснованность модели регресса.

Значение вычисляется по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(X). При этом пары, содержащие NULL, не учитываются.

Синтаксис:

РегрессияSXX (Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияSXX(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
60

РегрессияSYY (Regr_SYY)

Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(Y).

Значение вычисляется без учета пар, содержащих NULL.

Синтаксис:

РегрессияSYY (Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияSYY(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
6445.55556

РегрессияSXY (Regr_SXY)

Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * КовариацияГенеральнойСовокупности(Y, X). Вычисляется без учета пар, содержащих NULL.

Синтаксис:

РегрессияSXY (Y, X)

Параметры:

Y – тип Число;

X – тип Число.

Пример:

X

Y

1

7

2

1

3

2

4

5

5

7

6

34

7

32

8

43

9

87

Копировать в буфер обмена
ВЫБРАТЬ РегрессияSXY(Y, X) ИЗ Таблица

Результат:

Копировать в буфер обмена
535

МестоВПорядке (Rank)

Синтаксис:

МестоВПорядке(Порядок, ПорядокИерархии, ИмяГруппировки)

Параметры:

Порядок – тип Строка. Содержит выражения, в последовательности которых нужно расположить групповые записи, разделенные через запятую. Направление упорядочивания управляется при помощи слов Возр, Убыв. После поля также можно указать строку Автоупорядочивание, что обозначает, что при упорядочивании ссылок нужно использовать поля упорядочивания, определенные для объекта, на который ссылка. Если последовательность не указана, то значение рассчитывается в последовательности группировки;

ПорядокИерархии – тип Строка. Содержит выражения упорядочивания для иерархических записей;

ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислить функцию.. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.

Пример:

Копировать в буфер обмена
МестоВПорядке("[Количество Оборот]")

КлассификацияABC (ClassificationABC)

Функция возвращает номер класса, начиная с 1, который соответствует классу А.

Синтаксис:

КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)

Параметры:

Значение – тип Строка. Указывает выражение, для которого следует рассчитывать классификацию;

КоличествоГрупп – тип Число. Задает количество групп, на которое нужно разбить набор значений;

ПроцентыДляГрупп – тип Число. Объем, в %, каждой группы разбиения, кроме последней группы. Перечисляются в строке через запятую.

ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление выполняется в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Данное имя будет заменено на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.

Пример:

Копировать в буфер обмена
КлассификацияABC(СуммаОборот, 3, "15, 25")

1.6. Другие операции

Операция «ВЫБОР»

Операция ВЫБОР предназначена для осуществления выбора одного из нескольких значений при выполнении некоторых условий.

Копировать в буфер обмена
ВЫБОР Когда Сумма > 1000 Тогда Сумма Иначе 0 Конец

Правила сравнения двух значений

Если типы сравниваемых значений отличаются друг от друга, то отношения между значениями определяются на основании приоритета типов:

NULL (самый низший),

Булево,

Число,

Дата,

Строка,

● ссылочные типы.

Отношения между различными ссылочными типами определяются на основе ссылочных номеров таблиц, соответствующих тому или иному типу.

Если типы данных совпадают, то производится сравнение значений по следующим правилам:

● у типа Булево значение ИСТИНА больше значения ЛОЖЬ;

● у типа Число обычные правила сравнения для чисел;

● у типа Дата более ранние даты меньше более поздних;

● у типа Строка строки сравниваются в соответствии с установленными национальными особенностями базы данных;

● ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).

Работа со значением NULL

Любая операция, в которой значение одного из операндов NULL, будет давать результат NULL.

Есть исключения:

● операция И будет возвращать NULL только в случае, если ни один из операндов не имеет значения Ложь;

● операция ИЛИ будет возвращать NULL только в случае, если ни один из операндов не имеет значение Истина.

Приоритеты операций

Операции имеют следующие приоритеты (первая строка имеет низший приоритет):

ИЛИ;

И;

НЕ;

В, ЕСТЬ NULL, ЕСТЬ НЕ NULL;

=, <>, <=, <, >=, >;

Бинарный +, Бинарный –;

*, /, %;

Унарный +, Унарный .

1.7. Функции

1.7.1. Работа с выражениями

ВЫЧИСЛИТЬ (EVAL)

Функция ВЫЧИСЛИТЬ предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.

Функция имеет следующие параметры:

Выражение – строка, содержащая вычисляемое выражение.

Группировка – строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. Если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. Если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.

Тип расчета – строка, содержащая тип расчета. Если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. Если значение параметра – Группировка, значения будут вычисляться для текущей групповой записи группировки.

Копировать в буфер обмена
СУММА(Продажи.СуммаОборот) / ВЫЧИСЛИТЬ("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке.

ВЫЧИСЛИТЬВЫРАЖЕНИЕ (EVALEXPRESSION)

Функция возвращает выражение для записи указанной группировки. Имеет следующие параметры:

Вычисляемое выражение. Строка, содержащая выражение, которое требуется вычислить.

Группировка. Строка, содержащая имя группировки, в которой требуется вычислить выражение. Если в качестве имени группировки используется пустая строка, то вычисление будет выполнено для текущей группировки. Если указана строка ОбщийИтог, то вычисление будет выполнено для общего итога. Если в параметре указано имя группировки-строки, то при вычислении в таблице вычисление будет выполнено для группировки, полученной на пересечении требуемой области вычисления (см. описание третьего параметра) и текущей строки группировки колонки. Если в параметре указано имя группировки-колонки, то вычисление выполняется для группировки, полученной на пересечении области вычисления группировки-колонки и текущей записи группировки-строки.

Область вычисления. Строка, содержащая область вычисления. Если параметр не указан, вычисление будет выполнено для текущей записи группировки, указанной в первом параметре. Параметр может принимать следующие значения:

ОбщийИтог – выражение будет вычисляться для всех записей группировки.

Иерархия – выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.

Группировка ‑ выражение будет вычисляться для текущей групповой записи группировки.

ГруппировкаНеРесурса – при вычислении функции для групповой записи по ресурсам выражение будет вычислено для первой групповой записи исходной группировки.

При вычислении функции ВычислитьВыражение со значением ГруппировкаНеРесурса для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра Группировка.

Компоновщик макета компоновки данных при генерации макета компоновки данных, при выводе в макет поля-ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение с указанным параметром ГруппировкаНеРесурса. Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.

Компоновщик макета при генерации выражения для поля % в группе иерархии генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления Иерархия.

Начало. Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из значений:

Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки. Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.

Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.

Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то получается первая запись группировки.
При получении предыдущей записи для итога по группировке получается первая запись.

Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая, то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи нет.

Текущая (Current). Необходимо получить текущую запись.

При получении для итога по группировке получается первая запись.

ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.

В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010 и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.

Конец. Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из значений:

Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.

Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.

Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.

Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.

Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.

Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то считается, что записей нет.

При получении предыдущей записи для итога по группировке считается последняя запись.

Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.

Если следующая запись выходит за пределы группировки, получается последняя запись. Например, если записей 3 и для третьей записи получают Следующая, то получается третья запись.

При получении следующей записи для итога по группировке считается, что записи нет.

Текущая (Current). Необходимо получить текущую запись.

При получении для итога по группировке получается первая запись.

ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках следует указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.

В качестве записи будет получаться последняя запись, значение поля упорядочивания у которой меньше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.01.2010.

Сортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется так же, как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр для упорядочивания по возрастанию, Убыв для упорядочивания по убывания, Автоупорядочивание для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.

ИерархическаяСортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Применяется для упорядочивания иерархических записей. Если не указано, то упорядочивание будет выполнено в соответствии с упорядочиванием, указанным в параметре Сортировка.

ОбработкаОдинаковыхЗначенийПорядка. Строка, содержащая одно из значений:

Вместе (Together) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.

Отдельно (Separately) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей.

Например, если полученная последовательность упорядочена по дате:

Копировать в буфер обмена
1. 01 января 2001 Иванов М. 10
2. 02 января 2001 Петров С. 20
3. 02 января 2001 Сидоров Р. 30
4. 03 января 2001 Петров С. 40

При использовании в обработке одинаковых значений порядка Отдельно предыдущей к записи 3 будет запись 2, а при использовании Вместе – запись 1. А фрагментом для текущей записи к записи 2 для Отдельно будет запись 2, а для Вместе – записи 2 и 3. Таким образом, сумма по текущей записи для Отдельно составит 20, а для Вместе – 50.

При указанном Вместе в параметрах Начало и Конец нельзя указывать смещение для позиций Первая, Последняя, Предыдущая, Следующая.

По умолчанию Отдельно.

Пример использования параметров

Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:

Копировать в буфер обмена
ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")

Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:

Копировать в буфер обмена
ВычислитьВыражение("Курс", , , "Предыдущая")

Функция ВычислитьВыражение учитывает отбор группировок, но не учитывает иерархические отборы.

Функция ВычислитьВыражение не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", , "ОбщийИтог") > 1000. Но такое выражение можно использовать в иерархическом отборе.

Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.

При расчете интервальных выражений для общего итога (второй параметр функции ВычислитьВыражение имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.

ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EvalExpressionWithGroupArray)

Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Синтаксис:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры:

Выражение – тип Строка. Выражение, которое нужно вычислить. Например, Сумма(СуммаОборот);

ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, "Контрагент, Партия";

ОтборЗаписей – выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;

ОтборЗаписей – отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.

Пример:

Копировать в буфер обмена
Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.

Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.

Например, для пользовательского поля с выражением:

Копировать в буфер обмена
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")

компоновщик макета сгенерирует для вывода следующее выражение:

Копировать в буфер обмена
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))

ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙТАБЛИЦАЗНАЧЕНИЙ(EvalExpressionWithGroupValueTable)

Функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Синтаксис:

ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

 Параметры:

Выражение – тип Строка; выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж;

ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия;

ОтборЗаписей – выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;

ОтборГруппировок – отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.

Пример:

Копировать в буфер обмена
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж", "Контрагент")

Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.

Например, для пользовательского поля с выражением:

Копировать в буфер обмена
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")

Компоновщик макета сгенерирует для вывода следующее выражение:

Копировать в буфер обмена
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))

1.7.2. Работа с датами и временем

ГОД (YEAR)

Данная функция предназначена для выделения года из значения типа Дата. Единственный параметр – это выражение, имеющее тип Дата.

Копировать в буфер обмена
ГОД(РасхНакл.Дата)

ДЕНЬ (DAY)

Данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
ДЕНЬ(РасхНакл.Дата)

ДЕНЬГОДА (DAYOFYEAR)

Данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365 (366). Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
ДЕНЬГОДА(РасхНакл.Дата)

ДЕНЬНЕДЕЛИ (WEEKDAY)

Данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7 (воскресенье). Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
ДЕНЬНЕДЕЛИ(РасхНакл.Дата)

ДОБАВИТЬКДАТЕ (DATEADD)

Функция предназначена для прибавления к дате некоторой величины. Параметры:

Выражение типа Дата;

Тип увеличения – строка, содержащая одно из значений:

Секунда,

Минута,

Час,

День,

Неделя,

Месяц,

Квартал,

Год,

Декада – к исходной дате будет добавлено или вычтено количество дней, умноженное на 10,

Полугодие.

Величина – на сколько необходимо увеличить дату. Тип Число. Дробная часть игнорируется.

Копировать в буфер обмена
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц", 1) 

Результат:

Копировать в буфер обмена
 12.11.2009 10:15:34

КВАРТАЛ (QUARTER)

Данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
КВАРТАЛ(РасхНакл.Дата)

КОНЕЦПЕРИОДА (ENDOFPERIOD)

Функция предназначена для выделения определенной даты из заданной даты.

Параметры:

Выражение типа Дата;

Тип периода – строка, содержащая одно из значений:

Минута,

Час,

День,

Неделя,

Месяц,

Квартал,

Год,

Декада,

Полугодие.

Копировать в буфер обмена
КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Неделя") 

Результат:

Копировать в буфер обмена
 13.10.2009 23:59:59.

МЕСЯЦ (MONTH)

Данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапазоне от 1 до 12. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
МЕСЯЦ(РасхНакл.Дата)

МИНУТА (MINUTE)

Данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
МИНУТА(РасхНакл.Дата)

НАЧАЛОПЕРИОДА (BEGINOFPERIOD)

Функция предназначена для выделения определенной даты из заданной даты.

Параметры:

Выражение типа Дата;

Тип периода – строка, содержащая одно из значений:

Минута,

Час,

День,

Неделя,

Месяц,

Квартал,

Год,

Декада,

Полугодие.

Копировать в буфер обмена
НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц") 

Результат:

Копировать в буфер обмена
01.10.2009 0:00:00

НЕДЕЛЯ (WEEK)

Данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1. Единственный параметр функции – это выражение, имеющее тип Дата.

РАЗНОСТЬДАТ (DATEDIFF)

Функция предназначена для получения разницы между двумя датами. Параметры:

Выражение типа Дата;

Выражение типа Дата;

Тип разности – одно из значений:

Секунда,

Минута,

Час,

День,

Месяц,

Квартал,

Год.

Копировать в буфер обмена
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), 
            ДАТАВРЕМЯ(2009, 10, 14, 9, 18, 06), 
            "День") 

Результат:

Копировать в буфер обмена
2

ТЕКУЩАЯДАТА (CURRENTDATE)

Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТЕКУЩАЯДАТА заменяется значением текущей даты.

Копировать в буфер обмена
ТЕКУЩАЯДАТА()

СЕКУНДА (SECOND)

Данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
СЕКУНДА(РасхНакл.Дата)

ЧАС (HOUR)

Данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23. Единственный параметр функции – это выражение, имеющее тип Дата.

Копировать в буфер обмена
ЧАС(РасхНакл.Дата)

1.7.3. Положение записи

НОМЕРПОПОРЯДКУ (SERIALNUMBER)

Получить следующий порядковый номер.

Копировать в буфер обмена
НОМЕРПОПОРЯДКУ()

НОМЕРПОПОРЯДКУВГРУППИРОВКЕ (GROUPSERIALNUMBER)

Возвращает следующий порядковый номер в текущей группировке.

Копировать в буфер обмена
НОМЕРПОПОРЯДКУВГРУППИРОВКЕ()

УРОВЕНЬ (LEVEL)

Функция предназначена для получения текущего уровня записи.

Копировать в буфер обмена
УРОВЕНЬ()

УРОВЕНЬВГРУППИРОВКЕ (LEVELINGROUP)

Функция предназначена для получения уровня записи относительно корня группировки.

Копировать в буфер обмена
УРОВЕНЬВГРУППИРОВКЕ()

1.7.4. Представление значения

ЗНАЧЕНИЕЗАПОЛНЕНО (VALUEISFILLED)

Возвращает Истину, если значение отлично от значения данного типа по умолчанию, отлично от значения NULL, отлично от пустой ссылки, отлично от значения Неопределено. Для логических значений осуществляется проверка на значение NULL. Для строк осуществляется проверка на отсутствие непробельных символов.

ФОРМАТ (FORMAT)

Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой «1С:Предприятия».

Параметры:

Значение,

Форматная строка.

Копировать в буфер обмена
ФОРМАТ(РасходныеНакладные.СуммаДок, "ЧДЦ=2")

1.7.5. Работа с числами

ACos

Вычисляет арккосинус в радианах.

Синтаксис:

 ACos(Выражение)

Параметр:

 Выражение – тип Число. Значение косинуса (в диапазоне -1 ... 1), по которому определяется угол.

ASin

Вычисляет арксинус в радианах.

Синтаксис:

ASin(Выражение)

Параметр:

 Выражение – тип Число. Аргумент функции. Определен в диапазоне -1 ... 1.

ATan

Вычисляет арктангенс в радианах.

Синтаксис:

ATan(Выражение)

Параметр:

 Выражение – тип Число. Аргумент функции.

Cos

Вычисляет косинус.

Синтаксис:

 Cos(Выражение).

Параметр:

Выражение – тип Число. Задается в радианах.

Exp

Возведение числа e в степень.

Синтаксис:

Exp(Выражение)

Параметр:

Выражение – тип Число. Значение степени.

Log

Вычисляет натуральный логарифм.

Синтаксис:

Log(Выражение)

Параметр:

Выражение – тип Число. Исходное число, больше 0.

Log10

Вычисляет логарифм X по основанию 10.

Синтаксис:

Log10(Выражение)

Параметр:

Выражение – тип Число. Исходное число, больше 0.

Pow

Возведение в степень.

Синтаксис:

Pow(Основание, Показатель)

Параметры:

Основание – тип Число. Основание операции возведения в степень.

Показатель – тип Число. Показатель степени.

Sin

Вычисляет синус.

Синтаксис:

Sin(Выражение)

Параметр:

Выражение – тип Число. Задается в радианах.

Sqrt

Вычисляет квадратный корень.

Синтаксис:

Sqrt(Выражение)

Параметр:

Выражение – тип Число. Неотрицательное число.

Tan

Вычисляет тангенс.

Синтаксис:

Tan(Выражение)

Параметр:

Выражение – тип Число. Аргумент функции.

Окр (Round)

Округляет исходное число до требуемой разрядности. Режим округления стандартный (1,5 как 2).

Синтаксис:

Окр(Выражение, Разрядность)

Параметры:

Выражение – тип Число. Исходное число. Разрядность – тип Число. Число знаков дробной части, до которых производится округление.

Цел (Int)

Отсекает дробную часть числа.

Синтаксис:

Цел(Выражение)

Параметр:

Выражение – тип Число. Дробное число.

1.7.6. Работа со строками

Врег(Upper)

Данная функция преобразует все символы строки в верхний регистр.

Синтаксис:

ВРег(<Строка>)

Параметр:

Строка – тип Строка. Исходная строка.

ДЛИНАСТРОКИ (STRINGLENGTH)

Функция предназначена для определения длины строки. Параметр – выражение строкового типа.

Копировать в буфер обмена
ДЛИНАСТРОКИ(Контрагенты.Адрес)

Лев (Left)

Данная функция выбирает первые слева символы строки.

Синтаксис:

Лев(<Строка>,<ЧислоСимволов>)

Параметры:

Строка – тип Строка. Исходная строка.

ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.

Возвращаемое значение:

Тип Строка. Строка выбранных символов.

НРег (Lower)

Данная функция преобразует все символы строки в нижний регистр.

Синтаксис:

НРег(<Строка>)

Параметр:

Строка – тип Строка. Исходная строка.

НСтр (NStr)

Получает строку на языке текущего пользователя или указанном языке из набора строк на разных языках конфигурации.

Синтаксис:

НСтр(<ИсходнаяСтрока>,<КодЯзыка>)

Параметр:

Строка – тип Строка. Строки на разных языках, разделенные символом ";" (точка с запятой). Строка на одном языке состоит из кода языка, указанного в метаданных, символа "=" (равно) и собственно строки текста на данном языке в одинарных кавычках, двойных кавычках или без кавычек (когда указывается только один язык);

КодЯзыка – тип Строка. Код языка, на котором нужно получить строку. Если значение не указано, то строка будет выдаваться на языке, определенного для текущего пользователя.

Возвращаемое значение:

Тип Строка. Строка, соответствующая указанному языку или языку текущего пользователя.

ПОДСТРОКА (SUBSTRING)

Данная функция предназначена для выделения подстроки из строки. Параметры:

● выражение, имеющее строковый тип. Если в качестве первого параметра фигурирует строка, то результатом функции будет строка (возможно, нулевой длины). Если в качестве первого параметра будет использовано значение NULL, то результатом функции также будет значение NULL. Другие значения считаются недопустимыми и вызывают состояние ошибки;

● позиция символа, с которого начинается выделяемая из строки подстрока;

● длина выделяемой подстроки.

Копировать в буфер обмена
ПОДСТРОКА(Контрагенты.Адрес, 1, 4) 

Прав (Right)

Данная функция выбирает первые справа символы строки.

Синтаксис:

Прав(<Строка>,<ЧислоСимволов>)

Параметры:

Строка – тип Строка. Исходная строка.

ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.

Возвращаемое значение:

Тип Строка. Строка выбранных символов.

СОКРЛ (TrimL)

Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.

Синтаксис:

СокрЛ(<Строка>)

Параметры:

Строка – тип Строка. Исходная строка.

Возвращаемое значение:

Тип Строка. Строка, полученная в результате отсечения пробелов.

СОКРЛП(TrimAll)

Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке.

Синтаксис:

СокрЛП(<Строка>)

Параметры:

Строка – тип Строка. Исходная строка.

Возвращаемое значение:

Тип Строка. Строка, полученная в результате отсечения пробелов.

СОКРП (TrimR)

Данная функция отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.

Синтаксис:

СокрП(<Строка>)

Параметры:

Строка – тип Строка. Исходная строка.

Возвращаемое значение:

Тип Строка. Строка, полученная в результате отсечения пробелов.

СтрЗаменить (StrReplace)

Данная функция находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

Синтаксис:

СтрЗаменить(<Строка>,<ПодстрокаПоиска>,<ПодстрокаЗамены>)

Параметры:

Строка – тип Строка. Исходная строка.

ПодстрокаПоиска –

ПодстрокаЗамены

Возвращаемое значение:

Тип Строка. Строка, полученная в результате замены.

Если второй параметр – константа, то длина строки равна:

<Строка> + (<Строка> / <ПодстрокаПоиска> с округлением в большую сторону) * (<ПодстрокаЗамены> - <ПодстрокаПоиска>), но не меньше чем длина <Строка>.

Если второй параметр не константа, то длина строки равна длине <Строка> * <ПодстрокаЗамены>.

Если полученная длина больше 1024, то получается строка неограниченной длины.

СтрНайти (StrFind)

Данная функция находит первое вхождение искомой строки как подстроки в исходной строке. Поиск выполняется без учета регистра.

Синтаксис:

СтрНайти(<Строка>, <ПодстрокаПоиска>)

Параметры:

Строка – тип Строка. Исходная строка.

ПодстрокаПоиска – тип Строка. Искомая подстрока.

Возвращаемое значение:

Тип Число (длина – 12). Найденная позиция, начиная с 1. Если возвращает 0, то строка не найдена.

1.7.7. Прочие функции

ВЫРАЗИТЬ (CAST)

Данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. Если выражение будет содержать тип, отличный от требуемого, будет возвращено значение NULL.

Синтаксис:

Выразить(Выражение, УказаниеТипа)

Параметры:

Выражение - преобразуемое выражение;

УказаниеТипа – строка, содержащая строку типа. Например, Число, Строка и т. п. Кроме примитивных типов данная строка может содержать имя таблицы. В таком случае будет осуществлена попытка выразить к ссылке на указанную таблицу.

Копировать в буфер обмена
ВЫРАЗИТЬ(Данные.Реквизит1, "Число(10,3)")

ЕСТЬNULL (ISNULL)

Данная функция возвращает значение второго параметра, если значение первого параметра – NULL. В противном случае будет возвращено значение первого параметра.

Синтаксис:

ЕстьNull(Выражение1, Выражение2)

Параметры:

Выражение1 – проверяемое значение;

Выражение2 – возвращаемое значение, если значение Выражение1 есть NULL.

Копировать в буфер обмена
ЕСТЬNULL(Сумма(Продажи.СуммаОборот), 0)

Представление (Presentation)

Данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка <Пустое значение".

Пример:

Копировать в буфер обмена
Представление(Контрагент)

ПОЛУЧИТЬНАВИГАЦИОННУЮССЫЛКУ (GetURL)

Данная функция получает навигационную ссылку в формате «1С:Предприятия» на объект информационной базы, на его реквизит, или на обсуждение системы взаимодействия.

Примечание. Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы или обсуждение системы взаимодействия запрос на сервер не выполняется.

Синтаксис:

ПолучитьНавигационнуюСсылку(Объект, ИмяРеквизита, Индекс)

Параметры:

Объект – Обязательный. Тип Любая ссылка, РегистрСведенийКлючЗаписи.<Имя регистра сведений>, ИдентификаторОбсужденияСистемыВзаимодействия, ОбсуждениеСистемыВзаимодействия. В качестве значения данного параметра могут быть указаны:

● Ссылка на объект информационной базы,

● Ключ записи регистра сведений,

● Идентификатор обсуждения системы взаимодействия,

● Обсуждение системы взаимодействия.

Если в данном параметре передано значение, от которого нельзя получить навигационную ссылку, будет сгенерировано исключение о неверном значении параметра;

ИмяРеквизита - тип Строка. Если требуется получить навигационную ссылку на реквизит объекта, то в данном параметре следует указать имя реквизита. Если требуется получить ссылку на ключ записи регистра сведений, то данный параметр должен содержать имя ресурса регистра сведений.
Если требуется получить ссылку на реквизит табличной части, то он указывается через точку "." после имени табличной части, и в параметре <Индекс> следует указать индекс строки табличной части;

Индекс - тип Число. Индекс строки в табличной части, если требуется получить навигационную ссылку на реквизит табличной части.
Первая строка имеет индекс, равный 0.

Пример:

Копировать в буфер обмена
// Адрес объекта
 Адрес1 = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
 // Адрес реквизита объекта
 Адрес2 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Реквизит1");
 // Адрес реквизита табличной части объекта
 Адрес3 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, 
 "ТабличнаяЧасть1.Реквизит1", 10);

ТипЗначения(ValueType)

Возвращает значение типа Тип, содержащее тип значения параметра функции.

Синтаксис:

ТипЗначения(Выражение)

Параметр:

Выражение – тип Строка. Строковое значение типа.

УникальныйИдентификатор (UUID)

Возвращает уникальный идентификатор переданной ссылки.

Синтаксис:

УникальныйИдентификатор(Выражение)

Параметры:

Выражение ‑ выражение, результатом вычисления которого является ссылочное значение (кроме ссылки на таблицы внешних источников данных).

Возвращаемое значение:

Зависит от значения параметра функции:

NULLNULL.

Неопределено – пустой уникальный идентификатор (типа УникальныйИдентификатор).

● Для значения с типом ссылки – значение типа УникальныйИдентификатор.

● Для других типов (включая входящие в составной тип) – формируется ошибка времени выполнения.